#ifndef AODV_SOCKET_H
#define AODV_SOCKET_H

#include <stdint.h> // For uint32_t
#include <winsock2.h> // For Winsock functions
#include <ws2tcpip.h> // For InetPton

#pragma comment(lib, "ws2_32.lib") // Link with ws2_32.lib

#define AODV_PORT 5000 // AODV协议使用的端口号
#define MAX_PACKET_SIZE 2048 // 最大数据包大小

// 初始化Winsock
int aodv_socket_init();

// 清理Winsock
void aodv_socket_cleanup();

// 创建并绑定UDP套接字
SOCKET aodv_socket_create_and_bind(uint32_t ip_addr);

// 发送数据包
int aodv_socket_send(SOCKET sock, const void *buf, int len, uint32_t dest_ip, int dest_port);

// 接收数据包
int aodv_socket_recv(SOCKET sock, void *buf, int len, uint32_t *source_ip, int *source_port);

#endif // AODV_SOCKET_H